Dynamic media content for collaborators with client locations in dynamic client contexts

ABSTRACT

Methods, systems, and computer program products are provided for delivering dynamic media content to collaborators. Embodiments include providing collaborative event media content, wherein the collaborative event media content includes a grammar and a structured document; providing data identifying a client&#39;s location; storing, in the context server in a data structure comprising a dynamic client context for the client, the data identifying the client&#39;s location; detecting an event in dependence upon the dynamic client context; identifying one or more collaborators in dependence upon the dynamic client context and the event; and selecting from the structured document a classified structural element in dependence upon an event type and a collaborator classification; and transmitting the selected structural element to the collaborator. In many embodiments, detecting an event in dependence upon the dynamic client context includes detecting a change in a value of a data element in the dynamic client context, and applying event detection rules base to the dynamic client context.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation application of and claims priorityfrom U.S. patent application Ser. No. 10/832,006, filed on Apr. 26,2004.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The field of the invention is data processing, or, more specifically,methods, systems, and products for delivering dynamic media content forcollaborators.

2. Description of Related Art

Technology today includes the capability of sensing client locations andretaining persistent data describing clients, devices and persons, andthe environments in which they reside, work, and travel. Technologyprovides the capability of detecting changes in clients' environmentsincluding their locations. Current technology provides the capability ofstructuring information needed to respond meaningfully to such changes,including, for example, the capabilities of the SGML (StandardGeneralized Markup Language), XML (eXtensible Markup Language), and HTML(HyperText Markup Language).

For any particular response, however, there is a wide variety ofcollaborator purpose, organizational affiliation, technical knowledge,security authorization, and so on, across almost any dimension in whichresponders may vary. Targeting content for such a heterogeneous set ofcollaborators is typically a manual process today in which providerscreate wholly separate presentations for each type of collaborator, andthe content of each such presentation is reduced to the lowest commondenominator of any particular group. There is a substantial need forimproved coordination in responding to changes in clients' locations andenvironments as well as improvements in multimedia presentation systemsuseful by responding collaborators.

SUMMARY OF THE INVENTION

Methods, systems, and computer program products are provided fordelivering dynamic media content to collaborators. Embodiments includeproviding collaborative event media content, wherein the collaborativeevent media content includes a grammar and a structured document;providing data identifying a client's location; storing, in the contextserver in a data structure comprising a dynamic client context for theclient, the data identifying the client's location; detecting an eventin dependence upon the dynamic client context; identifying one or morecollaborators in dependence upon the dynamic client context and theevent; and selecting from the structured document a classifiedstructural element in dependence upon an event type and a collaboratorclassification; and transmitting the selected structural element to thecollaborator. In many embodiments, detecting an event in dependence uponthe dynamic client context includes detecting a change in a value of adata element in the dynamic client context, and applying event detectionrules base to the dynamic client context.

In typical embodiments, providing to a context server data identifying aclient's location includes reading GPS coordinates from a GPS receiver,and storing the data identifying the client's location includes storingthe GPS coordinates in the dynamic client context for the client. Inmany embodiments, providing to a context server data identifying aclient's location includes querying a router for a physical address ofthe router, and storing the data identifying the client's locationincludes storing the physical address of the router in the dynamicclient context for the client. In some embodiments, the router includesa wireless network access point. In many embodiments, providing to acontext server data identifying a client's location includes querying arouter for a physical address of the client, and storing the dataidentifying the client's location includes storing the physical addressof the client in the dynamic client context for the client.

In typical embodiments, providing collaborative event media contentincludes creating, in dependence upon original media content, astructured document, the structured document further comprising one ormore structural elements, and creating a grammar for the collaborativeevent media content, wherein the grammar includes grammar elements eachof which includes an identifier for at least one structural element ofthe structured document. Many embodiments also include classifying astructural element of the structured document according to apresentation attribute. In some embodiments, classifying a structuralelement includes identifying a presentation attribute for the structuralelement; identifying a classification identifier in dependence upon thepresentation attribute; and inserting the classification identifier inassociation with the structural element in the structured document.

The foregoing and other objects, features and advantages of theinvention will be apparent from the following more particulardescriptions of exemplary embodiments of the invention as illustrated inthe accompanying drawings wherein like reference numbers generallyrepresent like parts of exemplary embodiments of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 sets forth a block diagram of an exemplary system operableaccording to embodiments of the present invention to deliver dynamicmedia content to collaborators.

FIG. 2 sets forth data structure diagrams illustrating exemplary datastructures useful in various embodiments of the present invention todeliver dynamic media content to collaborators.

FIG. 3 sets forth a data flow diagram illustrating an exemplary methodfor providing collaborative event media content.

FIG. 4 sets forth an exemplary data structure in which a grammar may beimplemented according to embodiments of the present invention.

FIG. 5 is a data flow diagram illustrating a further method forproviding collaborative event media content.

FIG. 6 sets for a data flow diagram illustrating an exemplary method forclassifying a structural element.

FIG. 7 sets forth a data flow diagram illustrating an exemplary methodfor classifying a structural element.

FIG. 8 sets forth a data flow diagram illustrating a further exemplarymethod for classifying a structural element.

FIG. 9 sets forth a data flow diagram illustrating another exemplarymethod for classifying a structural element.

FIG. 10 sets forth a data flow diagram illustrating a further exemplarymethod for classifying a structural element.

FIG. 11 sets forth a flow chart illustrating an exemplary method fordelivering dynamic media content to collaborators.

FIG. 12 sets a forth flow chart illustrating an exemplary method fordetecting an event in dependence upon a dynamic client context.

FIG. 13 sets forth a data flow diagram illustrating a further exemplarymethod for selecting classified structural elements and transmittingthem to a collaborator.

FIG. 14 sets forth a flow chart illustrating an exemplary method forgenerating a dynamic client context for a client.

FIG. 15 sets forth a flow chart illustrating an exemplary method forgenerating a dynamic client context for a client.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS Introduction

The present invention is described to a large extent in thisspecification in terms of methods for creating a voice response grammarfrom a presentation grammar. Persons skilled in the art, however, willrecognize that any computer system that includes suitable programmingmeans for operating in accordance with the disclosed methods also fallswell within the scope of the present invention. Suitable programmingmeans include any means for directing a computer system to execute thesteps of the method of the invention, including for example, systemscomprised of processing units and arithmetic-logic circuits coupled tocomputer memory, which systems have the capability of storing incomputer memory, which computer memory includes electronic circuitsconfigured to store data and program instructions, programmed steps ofthe method of the invention for execution by a processing unit.

The invention also may be embodied in a computer program product, suchas a diskette or other recording medium, for use with any suitable dataprocessing system. Embodiments of a computer program product may beimplemented by use of any recording medium for machine-readableinformation, including magnetic media, optical media, or other suitablemedia. Persons skilled in the art will immediately recognize that anycomputer system having suitable programming means will be capable ofexecuting the steps of the method of the invention as embodied in aprogram product. Persons skilled in the art will recognize immediatelythat, although most of the exemplary embodiments described in thisspecification are oriented to software installed and executing oncomputer hardware, nevertheless, alternative embodiments implemented asfirmware or as hardware are well within the scope of the presentinvention.

Delivering Dynamic Media Content To Collaborators

Exemplary methods, systems, and products are described for deliveringdynamic media content to collaborators with reference to theaccompanying drawings, beginning with FIG. 1. FIG. 1 sets forth a blockdiagram of an exemplary system operable according to embodiments of thepresent invention to deliver dynamic media content to collaborators. Thesystem of FIG. 1 operates generally to deliver dynamic media content tocollaborators by providing collaborative event media content (266),where collaborative event media content generally includes a grammar anda structured document; generating a dynamic client context (236) for aclient (154); detecting an event (168) in dependence upon the dynamicclient context (236); identifying one or more collaborators (182) independence upon a dynamic client context (236) and the event (168);selecting from a structured document in the collaborative event mediacontent (266) a classified structural element in dependence upon anevent type and a collaborator classification; and transmitting theselected structural element to the collaborator.

The system of FIG. 1 includes environmental sensors (156) and locationsensors (158) that provide data describing a client (154) and theclient's environment. Environmental sensors are any sensor capable ofdetecting or measuring in electronic form one or more environmentalconditions of a client, including factors and variables near theclient's physical location. Examples of environmental sensors includesmoke detectors, thermometers, barometers, motion detectors, lightsensors, metal detectors, chemical sensors, and so on, as will occur tothose of skill in the art. Location sensors are any mechanism capable ofindicating in electronic form at least a useful approximation of theclient's physical location. Examples of location sensors include GPS(Global Positioning System) receivers, network routers configured withtheir own physical locations, and network routers configured withclients' physical locations.

The system of FIG. 1 also includes clients (154) that operate byacquiring data that describes the client and the client's environmentand communicates that data to a context server (160) for storage in adynamic client context. Clients are any automated computing machinerycapable of communicating client location and client environmental datato a context server, including, for example, personal computers,laptops, personal digital assistants (“PDAs”), network-enabled mobiletelephones, and so on, as will occur to those of skill in the art. Thereis no requirement that a client be associated with a person, althoughthey often are. On the other hand, however, a client may be the computeroperating a security system in a building with smoke detectors,thermometers, and motion sensors. Context server (160) is any datacommunications server capable of accepting data communications messagesfrom clients and providing data processing services in response to suchmessages. Such messages may be communicated according to any useful datacommunications protocol as will occur to those of skill in the art,including for example HTTP (the HyperText Transport Protocol), and themessages may include, for example, HTTP ‘REQUEST’ messages and HTTP‘POST’ messages.

Data processing services provided by context server (160) includedetecting an event (168) in dependence upon the dynamic client context(236). Detecting an event may be carried out by detecting a change in avalue of a data element in a dynamic client context (236) and applyingan event detection rules base (164) to the dynamic client context.Context server (160) includes an event generator (166), a softwaremodule programmed to create an event object (168) and hand it off toaction engine (170) when an event is detected.

An event is a change in one or more values of data elements in a dynamicclient context that meet event criteria such as threshold requirementsor rules in a rules base. A mere change in the value of a data elementmay not be enough to constitute an event. A change in environmentaltemperature from 72 degrees Fahrenheit to 73 degrees Fahrenheit, forexample, may generally be ignored by an event generator. Consider thefollowing event generation rule, however:

-   -   IF a client's physical location is in a building    -   AND IF the temperature in the building exceeds 105 degrees        Fahrenheit    -   AND IF a smoke detector in the building is activated    -   THEN event type is set to ‘FIRE’

In this example, the client's physical location, the environmentaltemperature for the client, and the status of the smoke detector wherethe client is located are all stored in data elements in a dynamicclient context for the client. In this example, event generator appliesthe exemplary rule from rules base (164) and receives a return eventtype of ‘FIRE,’ which event generator (166) is programmed to pass to anobject oriented parameterized event creation factory method in an eventfactory object. The event factory instantiates and returns an object ofa concrete event class named, for example, fireEvent, derived from anabstract event class. The abstract class declares member data elementsand member methods needed by all concrete event classes in the system.Each concrete event class is then augmented with member data elementsand member methods as needed to address particular kinds of events,fires, automobile accidents, hazardous materials spills identified bychemical sensors, firearms presence identified by metal detectors,burglaries identified by motion detectors, and so on. Exemplary concreteevent class names therefore may include not only fireEvent, but alsocarWreckEvent, hazMatEvent, gunEvent, burglaryEvent, and so on, as willoccur to those of skill in the art.

When an event generator instantiates an event object, the eventgenerator typically may include in the event object a reference to oneor more dynamic client context objects, including the current dynamicclient context object whose changes in data values triggered the event,but also one or more previous dynamic client context objects so that anaction engine may have previous data values as needed. Alternatively, aconcrete event class may include all the data elements needed for actionpreparation, so that only the data values are loaded from the pertinentdynamic client contexts rather than including the dynamic clientcontexts themselves, object built from them, or object orientedreferences or pointers to them.

Event (168), by the time it arrives in action engine (170) contains allthe data needed to identify the type of event and develop actions inresponse to the event, including data from or references to objectsbuilt from pertinent dynamic client contexts (236). Action engine (170)is programmed to apply collaborator selection rules (186) to the eventtype identified in event (168) to assemble from collaborator profiledatabase (184) a list (176) of collaborators for the event. Collaboratorprofiles are data structures such as records in a collaborator profiledatabase (184) that include data elements describing a collaborator,including, for example, collaborator name, collaborator identificationcode, collaborator physical address, collaborator type (EMS, police,wife, accountant, lawyer, HazMat Responder, and so on), and a list ofone or more event types in which a collaborator may collaborate.Examples of collaborator selection rules include the following:

-   -   Select collaborators according to event type.    -   Select only collaborators that are currently ‘present’ for        receipt of instant messages on an instant messaging service.    -   If, for an event type, there is more than one collaborator of a        collaborator type, select all collaborators of that type.    -   If, for an event type, there is more than one collaborator of a        collaborator type, select the first collaborator of that type        found in the collaborator profile database.    -   If, for an event type, there is more than one collaborator of a        collaborator type, select the collaborator of that type whose        physical location is closest to the client's.

The collaborator list (176) is installed in instant messaging server(174) so that all collaborators in the list are ‘present’ for instantmessaging and all collaborators on the list are joined in a messagingsession so that any messages from any collaborator is seen immediatelyon the communications devices of all collaborators (182). Examples ofinstant messaging protocols useful with various embodiments of thepresent invention include the Instant Messaging and Presence Protocol(“IMPP”) specified by the IMPP Working Group of the Internet EngineeringTask Force and the Mitre Corporation's Simple Instant Messaging andPresence Service (“SIMP”). Such instant messaging services generallydefine and support ‘presence services’ that provide indications whetheran instant messaging client is on-line. Such services also allow users,in this case collaborators, to subscribe to one another's messaging, sothat messages to one collaborator are also communicated to othersubscribing collaborators. Action engine (170), in providing the list(176) of collaborators for an event (168) to the instant messagingservice (174), effects a mutual subscription among the collaborators solisted, so that messages among the collaborators are communicated to allcollaborators for that event.

Collaborators (182) are effectively represented in the system of FIG. 1by their communications devices, which again may or may not beassociated directly with a particular person. A ‘collaborator’ may be,for example, a console in a 911 service staffed by more than one person,or a passive, unmanned display device may be registered as acollaborator for an event type. It is generally expected, however, thata collaborator is a person participating, collaborating, in respondingto an event by use of a data communications device connected to aninstant messaging session that is established for the purpose of helpingcollaborators so respond.

In the system of FIG. 1, action engine (170) is programmed to request ofaction server (178) an action list for an event type. Action server(178) operates an action factory (not shown) that generates fromconcrete action classes (180) one or more action objects, placesreferences to the action object in a list object (172), and returns thelist object (172) to action engine (170). Action engine (170) thenproceeds generally to execute the actions identified in the list (172).Examples of actions include transmitting to collaborators a descriptionof the event that triggered the current action list, transmitting tocollaborators data from a pertinent dynamic client context, transmittingto collaborators Materials Data Sheets for use in HazMat responses,transmitting to collaborators maps showing a client's physical location,transmitting to collaborators travel directions to a client's physicallocation, and so on as will occur to those of skill in the art.

The system of FIG. 1 includes a voice response server (104) throughwhich collaborators (182) may issue presentation control instructions toaction engine (170). Presentation control instructions representinstructions or requests from collaborators for particular collaborativeevent media content. A collaborator may, for example, request a map ofthe neighborhood of a client's physical location, directions from thecollaborator's present location to the client's location, Materials DataSheets for hazmat responses, and so on. Voice response server (104)creates presentation control instructions for action engine (170), forexample, by receiving through a VOIP (Voice Over Internet Protocol)channel from a collaborator a key phrase and optional parameters forinvoking a presentation action and parsing the key phrase and parametersagainst a grammar into a presentation control instruction.

For further explanation, FIG. 2 sets forth data structure diagramsillustrating exemplary data structures useful in various embodiments ofthe present invention to deliver dynamic media content to collaborators.The exemplary data structures of FIG. 2 include a client record (154)representing a client. As discussed above, a client is any automatedcomputing machinery capable of communicating client location and clientenvironmental data to a context server, including, for example, personalcomputers, laptops, personal digital assistants (“PDAs”),network-enabled mobile telephones, and so on, as will occur to those ofskill in the art. The client record (154) of FIG. 2 includes a clientIDfield (670) that uniquely identifies the client and an IP address field(673) that includes a network address of the client.

The exemplary data structures of FIG. 2 also include a dynamic clientcontext record (236) that represents the client and the client'ssurrounding environment. The dynamic client context record (236) of FIG.2 includes a client ID (670) identifying the client and a location field(554) containing the location of the client. The location of the clientmay be represented as a set of coordinates, a physical address, abuilding and room number, or any other representation of client locationthat will occur to those of skill in the art. The dynamic client contextrecord (236) of FIG. 2 includes a data storage for three sets ofenvironmental IDs (672, 676, 680) and their corresponding environmentalvalues (674, 678, 682). Environmental IDs uniquely identify a particularenvironmental condition such as temperature, humidity, barometricpressure and so on as will occur to those of skill in the art.Environmental values (674, 678, 682) represent the current state of theenvironmental conditions. Environmental values are typically measured inelectronic form by one or more environmental sensors and reported to aclient. Examples of environmental sensors include smoke detectors,thermometers, barometers, motion detectors, light sensors, metaldetectors, chemical sensors, and so on, as will occur to those of skillin the art. Although the dynamic client context (236) of FIG. 2 includesdata storage for only three environmental IDs and their correspondingvalues there is no such limitation in the scope of the presentinvention. In fact, dynamic client contexts according to the presentinvention often contain values for many kinds of environmentalconditions and therefore there is no limitation on the number ofenvironmental conditions that can be represented in a dynamic clientcontext as will occur to those of skill in the art.

The exemplary data structures of FIG. 2 also include an event record(168) representing a change in one or more values of data elements in adynamic client context that meet event criteria such as thresholdrequirements or rules in a rules base. The event record (168) of FIG. 2includes an event ID (684) uniquely identifying the event and an eventtype (686) that identifies the kind of event represented by the eventrecord. Examples of event types include ‘fire,’ ‘rain,’ ‘thunder’ and soon as will occur to those of skill in the art.

The data structures of FIG. 2 include an exemplary collaborator profile(183) representing a collaborator. As discussed above, collaborators canbe persons, devices, or processes and are often represented by theircommunications devices. A ‘collaborator’ may be, for example, a consolein a 911 service staffed by more than one person, or a passive, unmanneddisplay device may be registered as a collaborator for an event type. Itis generally expected, however, that a collaborator is a personparticipating, collaborating, in responding to an event by use of a datacommunications device connected to an instant messaging session that isestablished for the purpose of helping collaborators so respond. Thecollaborator profile (183) of FIG. 2 includes a collaborator ID (243)uniquely identifying the collaborator (244). The exemplary collaboratorprofile (183) of FIG. 2 includes data storage for a classification (244)for the collaborator. A collaborator classification is type codedescribing the collaborator and used to both select the collaborator inresponse to an event as well as to select structural elements ofcollaborative event media content to present to the collaborator. Theexemplary collaborator profile (183) of FIG. 2 includes thecollaborators current location (688) and data storage for one or moredisplay device IDs (690) identifying one or more display devicesavailable to the collaborator on which structural element ofcollaborative event media content can be displayed to the collaborator.The exemplary collaborator profile (183) also includes an eventTypeList(681) that includes event types for collaborator selection as discussedin more detail below.

The exemplary data structures of FIG. 2 includes collaborative eventmedia content (266) representing media content available for dynamicdelivery to a collaborator in response to an event. The collaborativeevent media content of FIG. 2 includes a structured document (122) whichincludes a plurality of structural elements (402) and classificationidentifies (708) for the structural elements. Examples of structuralelements include pages, paragraphs, bullet points, graphical images, andso on as will occur to those of skill in the art. A classificationidentifier is an identifier that classifies a structural element for aparticular collaborator. That is, classification identifiers are used toselect particular structural elements for delivery to particularcollaborators.

The collaborative event media content includes a grammar (258)associated with the structured document (122) that includes grammarelements (316) and structural element identifiers (318). A grammar (258)is a data structure associating key phrases with presentation actionsthat facilitates a collaborator navigating the structured document (122)of collaborative event media content using speech commands. In theexample of FIG. 2, the grammar (258) includes grammar elements (316)each of which includes an identifier (318) for at least one structuralelement (402) of the structured document (122).

Providing Collaborative Event Media Content

For further explanation, FIG. 3 sets forth a data flow diagramillustrating an exemplary method for providing collaborative event mediacontent that includes creating (304), in dependence upon original mediacontent (108), a structured document (122). In the example of FIG. 3,the structured document (122) includes one or more structural elements(402). Examples of structural elements include pages, paragraphs,slides, bullets points, graphic images, video clips and so on as willoccur to those of skill in the art. In the method of FIG. 3, creating(304) a structured document (122) includes inserting (320) in thestructural document (122) structural element identifiers (322) for thestructural elements (402). A structural element identifier (302) is anidentifier such as for example a tag in an XML document or otheridentifier in a structured document that identifies a structuralelement.

The method of FIG. 3 also includes creating (310) a grammar (258) forthe collaborative event media content (266). A grammar (258) is a datastructure associating key phrases with presentation actions thatfacilitates a collaborator navigating the structured document (122) ofthe collaborative event media content (266) using speech commands. Apresentation action is an action controlling the display of one or morestructural elements of a structured document. For example, a grammar mayinclude a key phrase ‘next bullet’ that is associated with apresentation action that searches the structured document for the nextstructural element identified as a bullet point and displays thatstructural element. In such and example, to invoke the display of thenext bullet point of the structured document, a collaborator need onlyspeak the key phrase ‘next bullet.’

For further explanation FIG. 4 sets forth an exemplary data structure(258) in which a grammar may be implemented according to embodiments ofthe present invention. The grammar of FIG. 4 includes several grammarelements (502-514) for a content type. A content type represents thekind of media to be directed with spoken key phrases of the grammar. Inthis example, the content type is taken as a word processing documenthaving structural elements that include pages, paragraphs, bullets,titles, subtitles, and so on, and the data structure includes a columnfor an identifier (318) of a structural element, a column for a keyphrase (516) for formulating a presentation control instruction forinvoking a presentation action to display the collaborative mediacontent, and a column for a presentation action identifier (518)representing a presentation action. The exemplary data structure of FIG.4 also includes a column for a data indication whether a presentationcontrol instruction requires a parameter. The exemplary grammar entriesfor presentation action identifiers PgDn (502), PgUp (504),nextParagraph (508), and prevBullet (512) have parameter (520) values of‘null,’ signifying that a voice response server parsing their keyphrases into presentation control instructions is not to parse aparameter for a presentation control instruction. The exemplary grammarentries for presentation action identifiers goToPage (506), nextHeading(510), and goToSubtitle (514), however, have parameter (520) values of‘integer’ and ‘string,’ signifying that a voice response server parsingtheir key phrases into presentation control instructions is to seek toparse for each of them respectively an integer parameter, a stringparameter, and a string parameter.

Creating a grammar (258) such as the grammar of FIG. 4 typicallyincludes identifying the content type of at least a portion of theoriginal media content and associating, in dependence upon the contenttype, a key phrase with a presentation action. Identifying the contenttype of at least a portion of the original media content can be carriedout by identifying the content type in dependence upon a filenameextension, in dependence upon document header elements, or any other wayof identifying the content type that will occur to those of skill in theart.

Methods of providing collaborative event media content are furtherexplained with an exemplary use case. Consider the following example ofa structured document:

<document>   <page id=“1”>     <p id=“1”>a paragraph</p>     <pid=“2”>another paragraph</p>     <image id=“1”>a graphic image</image>  </page>   <page id=“2”>     <p id=“3”>a paragraph</p>     <pid=“4”>another paragraph</p>     <image id=“2”>another graphicimage</image>   </page> </document>

And assume that this exemplary structured document is associated in aproviding collaborative event media content with the following grammar:

TABLE 1 Grammar Presentation Structural Action Element Key PhraseIdentifier Identifier Parameter page down PgDn <page> null page up PgUp<page> null go to page goToPage <page> integer next paragraphnextParagraph <p> null go to paragraph goToParagraph <p> integer nextimage nextImage <image> null go to image goToImage <image> integer

In this example, collaborative event media content is transmitted to acollaborator and the first page of the structured document is displayedon a collaborator's communications device such as for example a voiceresponse server enabled PDA. When the collaborator speaks the words“page down,” a voice response server on the PDA parses the speech into apresentation control instruction having a presentation controlidentifier named “PgDn” and communicates the presentation controlinstruction to display the next page, in this example, page 2 of theexample structured document. Similarly, when the first page of thestructured document is displayed, a collaborator's speaking the words“go to paragraph 4” results in changing the display to show paragraph 4on the second page of the document. And, when the first page is ondisplay for the collaborators the collaborator speaks the words “nextimage,” a collaborator's display device changes the display to showimage 2 on the second page of the document.

Classifying Structural Elements in Collaborative Event Media Content

FIG. 5 is a data flow diagram illustrating a further method forproviding collaborative event media content (266). The method of FIG. 5includes creating (304), in dependence upon an original media content(108), a structured document (122) comprising one or more structuralelements (402), as explained in above. The method of FIG. 5 alsoincludes classifying (330) a structural element (402) of the structureddocument (122) according to a presentation attribute (352). Presentationattributes are generic selection criteria for displaying appropriatestructural elements of collaborative event media content tocollaborators. Examples of presentation attributes includecollaborator's company names, department names, security levels,technical levels, and so on. The method of FIG. 5 also includes creating(310) a grammar (258) for the structured document (122) as describedabove with reference to FIGS. 3 and 4.

For further explanation, FIG. 6 sets for a data flow diagramillustrating an exemplary method for classifying a structural element.The method of FIG. 6 includes identifying (702) a presentation attribute(352) for the structural element (402); identifying (704) aclassification identifier (708) in dependence upon the presentationattribute (352); and inserting (706) the classification identifier (708)in association with the structural element (402) in the structureddocument (122). As discussed above with reference to FIG. 5,presentation attributes are generic selection criteria for displayingappropriate structural elements of collaborative event media content tocollaborators. Examples of presentation attributes includecollaborator's company names, department names, security levels,technical levels, and so on. A classification identifier (708)identifies a collaborators classification. Examples of classificationsinclude any supported data codes describing collaborator classification,including, for example “company=IBM,” “department=marketing,” “technicallevel=3,” “security level=2,” and others as will occur to those of skillin the art.

For further explanation, FIG. 7 sets forth a data flow diagramillustrating an exemplary method for classifying a structural element ina structured document in which identifying (702) a presentationattribute (352) for the structural element (402) includes selecting(710) a presentation attribute (352) from a list (712) of supportedpresentation attributes (352). The presentation attribute list (712) ofFIG. 7 includes two columns, one column for presentation attributes(352) and another column for associated classification identifiers(708). In the method of FIG. 7, identifying (704) a classificationidentifier (708) is carried out by identifying a classificationidentifier (708) associated with the presentation attribute (352) on thelist (712). In the method of FIG. 7, inserting (706) the classificationidentifier (708) includes manually editing (712) the structured document(122) to insert classification identifiers in appropriate locations toclassify structural elements in a structured document. For example, aparagraph to be viewed only by collaborators who are members of themarketing department may be classified by tagging the paragraph with<mkt></mkt>.

For further explanation, FIG. 8 sets forth a data flow diagramillustrating a further exemplary method for classifying a structuralelement in a structured document (122) in which identifying (702) apresentation attribute (352) for the structural element (402) includesselecting (710) a presentation attribute (352) from a list (712) ofsupported presentation attributes (352), the presentation attribute(352) having an associated classification identifier (708). In themethod of FIG. 8, identifying (704) a classification identifier (708)includes inserting (716) the classification identifier (708) in a datastructure (717) in association with a structural element identifier(322) for the structural element (402). In the method of FIG. 8,inserting (706) the classification identifier (708) in the structureddocument (122) includes reading (714) the classification identifier(708) from the data structure (717) in dependence upon the structuralelement identifier (322).

For further explanation, FIG. 9 sets forth a data flow diagramillustrating another exemplary method for classifying a structuralelement in a structured document that includes providing a list (712) ofsupported presentation attributes (352) including at least one keyword(802) and at least one indication of structural insertion scope (804)for each presentation attribute (352). In the method of FIG. 9,identifying (702) a presentation attribute (352) for the structuralelement (402) includes selecting (710) a presentation attribute (352)from the list (712) in dependence upon a keyword (806) from thestructured document (122). In the method of FIG. 9, identifying (704) aclassification identifier (708) is carried out by identifying aclassification identifier (708) associated with the presentationattribute (352) on the list (712). In the method of FIG. 9, inserting(706) the classification identifier (708) is carried out by insertingthe classification identifier (708) in the structured document (122)according to a structural insertion scope (804) for the selectedpresentation attribute (352).

FIG. 10 sets forth a data flow diagram illustrating a further exemplarymethod for classifying a structural element (402) in a structureddocument (122) that includes providing a list (712) of supportedpresentation attributes (352) including at least one data pattern (810)and at least one indication of structural insertion scope (804) for eachpresentation attribute (352). In the method of FIG. 10, identifying(702) a presentation attribute (352) for the structural element (402)includes selecting (814) a presentation attribute (352) from the list(712) in dependence upon a data pattern (812) from the structureddocument (122). In the method of FIG. 10, identifying (704) aclassification identifier (708) is carried out by identifying aclassification identifier (708) associated with the presentationattribute (352) on the list (712). In the method of FIG. 10, inserting(706) the classification identifier (708) is carried out by insertingthe classification identifier (708) in the structured document (122)according to a structural insertion scope (804) for the selectedpresentation attribute (352).

Methods of providing collaborative event media content are furtherexplained with an exemplary use case. Consider the following example ofa structured document:

<document>   <page id=“1”>     <p id=“1”>       a paragraph on anintroductory subject     </p>   </page>   <page id=“2”>     <p id=“2”>      a map paragraph on a particular subject     </p>     <techlevel=“2”>     <p id=“2”>       a more technical paragraph on the samesubject     </p>     </tech>     <security level=“2”>     <p id=“2”>      a more secret paragraph on the same subject     </p>    </security>     <dept id=“marketing”>     <p id=“2”>       aparagraph on the same subject with added detail       regardingmarketing     </p>     </dept>     <company id=“IBM”>     <p id=“2”>      a paragraph on the same subject with added detail       pertinentto a collaborator's company     </p>     </company>     <p id=“3”>      a paragraph on a further subject     </p>     ... ... ...  </page>   <page id=“3”>     ... ... ...   </page>   ... ... ...</document>

This example is generally discussed assuming that this exemplarystructured document is associated with a grammar that includespresentation action identifiers for paragraphs. In this example, whencontext changes for a client identify an event, a set of collaboratorsare identified and structural elements of the structured document ofcollaborative even media content are transmitted to the identifiedcollaborators. In this example when a structural element of the firstpage of the structured document is transmitted to a collaborator and thecollaborator speaks the words “next page,” a voice response serverparses the speech into a presentation control instruction with apresentation action identifier named “PgDn” and communicates thepresentation control instruction to display the next page, in thisexample, page 2 of the structured document.

Assume further that there are five collaborators selected in dependenceupon the event created by changed client contexts and note that thereare five different versions of paragraph 2 on page two of the structureddocument. In this example, a first version of paragraph 2 bears astructural identifier <p></p> identifying it as a paragraph, but thisfirst version of paragraph 2 bears no classification identifier. In thisexample, the unclassified version of paragraph 2 is displayed to allcollaborators having either the lowest technical classifications, thelowest security classifications, or no particular technical or securityclassifications at all. Moreover, in an example, where there were onlyone version of paragraph 2, all collaborators would be presented withthat one version.

In this example, a second version of paragraph 2 is classified with aclassification identifier <tech level=“2”>. In this example, the secondversion of paragraph 2 is displayed to collaborators having collaboratorclassification indicating technical level 2. That is, when acollaborator having technical level 2 in the collaborators profileclassifications is selected in dependence upon events created by changedclient contexts, rather than displaying an unclassified version ofparagraph 2, the second version of paragraph 2 classified <techlevel=“2”> is displayed to such a collaborator.

Similarly, a collaborator having a profile classification representing aheightened security authorization, security level 2, is shown theversion of paragraph 2 classified by the classification identifier<security level=“2”>. A collaborator having a collaborator profileclassification identifying the collaborator as a member of the marketingdepartment is shown the version of paragraph 2 classified by theclassification identifier <dept id=“marketing”>. A collaborator having aprofile classification identifying the collaborator as an employee ofIBM is shown the version of paragraph 2 classified by the classificationidentifier <company id=“IBM”>.

For purposes of clarity of explanation, the structural elements in thisexample are shown with only one classification per element. Persons ofskill in the art will recognize, however, that it is well within thescope of the present invention for a structural element of a structureddocument to be classified with any number of classification identifiers.

Delivering Dynamic Media Content to Collaborators

For further explanation, FIG. 11 sets forth a flow chart illustrating anexemplary method for delivering dynamic media content to collaboratorsthat includes providing (232) collaborative event media content (266).In the method of FIG. 11, the collaborative event media content (266)includes a grammar (258) and a structured document (122). In the methodof FIG. 11, providing (232) collaborative event media content (266) iscarried out by creating, in dependence upon original media content, astructured document and creating a grammar for the collaborative eventmedia content (266) as discussed in more detail above with reference toFIGS. 3-10.

The method of FIG. 11 includes generating (234) a dynamic client context(236) for a client. In the method of FIG. 11, generating (234) a dynamicclient context (236) is carried out by acquiring data that describes theclient and the client's environment and storing the data describing theclient and the client's environment in a context server.

The method of FIG. 11 includes detecting (238) an event (168) independence upon the dynamic client context (206). For furtherexplanation of detecting events, FIG. 12 sets a forth flow chartillustrating an exemplary method for detecting (238) an event (168) independence upon a dynamic client context (236). The method of FIG. 12includes detecting (256) a change in a value of a data element in thedynamic client context (236) and applying (262) rules from eventdetection rules base (164) to the dynamic client context (164) todetermine whether an event has occurred. In the method of FIG. 12,detecting (256) a change in a value of a data element in the dynamicclient context (236) is carried out by comparing data values in acurrent dynamic client context (236) with corresponding values from aprevious dynamic client context (235) for the same client. If there isany change (256), the method of FIG. 12 proceeds by applying (262) rulesfrom a rules base (164) to determine whether the context data as changedrepresents an event. If there is no change in the context data (260),the method of FIG. 12 proceeds by saving (268) the current dynamicclient context as a previous dynamic client context and continuing togenerate (234) dynamic client contexts as client data comes in. If anevent is recognized according to the rules from the rules base, themethod of FIG. 12 creates an event object (168) of an event type (242).

As mentioned above, the method of FIG. 12 may create an event object bypassing an event type identified by the rules base to an object orientedparameterized event creation factory method in an event factory object.Such an event factory instantiates and returns an object of a concreteevent class named, for example, fireEvent, carWreckEvent, hazMatEvent,gunEvent, burglaryEvent, and so on, as will occur to those of skill inthe art, derived from an abstract event class. The abstract classdeclares member data elements and member methods needed by all concreteevent classes in the system. Each concrete event class is augmented withmember data elements and member methods as needed to address particularkinds of events, fires, automobile accidents, hazardous materials spillsidentified by chemical sensors, firearms presence identified by metaldetectors, burglaries identified by motion detectors, and so on.

When an event generator instantiates an event object, the eventgenerator typically may include in the event object a reference to oneor more dynamic client context objects, including the current dynamicclient context object whose changes in data values triggered the event,but also one or more previous dynamic client context objects so that anaction engine may have previous data values as needed. Alternatively, aconcrete event class may include all the data elements needed for actionpreparation, so that only the data values are loaded from the pertinentdynamic client contexts rather than including the dynamic clientcontexts themselves, object built from them, or object orientedreferences or pointers to them.

Again referring to FIG. 11: The method of FIG. 11 includes identifying(240) one or more collaborators (182) in dependence upon the dynamicclient context (236) and the event (168). As mentioned above inconnection with the description of the system of FIG. 1, event (168)contains not only its event type (242), but also all the data needed todevelop actions in response to the event, including data from orreferences to objects built from pertinent dynamic client contexts(236). Identifying collaborators typically is carried out by applyingcollaborator selection rules to the event type (242) to identify from acollaborator profile database a collaborator for the event. Collaboratorprofiles are data structures, such as those shown for example atreference (182) on FIG. 2, often implemented as records in acollaborator profile database (184) that include data elementsdescribing a collaborator, including, for example, collaborator name,collaborator identification code, collaborator physical location,collaborator type or classification code (EMS, police, wife, accountant,lawyer, HazMat Responder, and so on), and a list (681 on FIG. 2) of oneor more event types in which a collaborator may collaborate.Collaborator selection rules are implemented to identify collaboratorson the basis of event type, collaborator presence on a instant messagingnetwork, client location, collaborator location, and collaborator typeor classification.

The method of FIG. 11 includes selecting (246) from the structureddocument (122) a classified structural element (402) in dependence uponan event type (242) and a collaborator classification (244). Selecting aclassified structural element can be carried out by selecting aclassified structural element having an associated classificationidentifier that corresponds to the collaborator classification.Alternatively, selecting a classified structural element can be carriedout by selecting a classified structural element in dependence uponcharacteristics of a collaborator's display device. In such examples,the selected structural element has an associated classificationidentifier that corresponds to a display device ID stored in thecollaborator's profile. Selecting structural elements in dependence uponthe device characteristics of the display device advantageouslyfacilitates selecting structural elements that are most compatible withthe collaborator's display device.

The method of FIG. 11 includes transmitting (248) the selectedstructural element (402) to the collaborator (182). In the method ofFIG. 11 transmitting (248) the selected structural element (402) to thecollaborator (182) is carried out by: selecting a data communicationsprotocol for communications with a collaborator; inserting the selectedstructural element in a data structure appropriate to the datacommunications protocol; and transmitting the data structure to thecollaborator according to the data communications protocol.

For Further explanation FIG. 13 sets forth a data flow diagramillustrating a further exemplary method for selecting classifiedstructural elements and transmitting them to a collaborator. The methodof FIG. 13 enables delivery of collaborative event media content tocollaborators according to a wide variety of organizational membership,technical knowledge, security authorization, and so on, across almostany dimension in which participants may vary. Such delivery isaccomplished generally in methods and systems according to embodimentsof the present invention by use of structured, classified collaborativeevent media content, which typically is made up of a grammar and astructured document. Using such documents as a source of presentationcontent, collaborative event media content is delivered by selectingfrom a structured document classified structural elements for deliveryto particular collaborators according to the classification identifiersin the document and collaborator classifications or type codes fromcollaborator profiles.

The method of FIG. 13 includes providing (450) collaborative event mediacontent (266) for use in responding to events generated by changes indynamic client contexts. In the method of FIG. 13, the collaborativeevent media content (266) includes a grammar (258) and a structureddocument (122), and providing (450) collaborative event media content(266) is carried out by as described in detail above with reference toFIGS. 3-10.

The method of FIG. 13 also includes creating (462) a presentationcontrol instruction (460). A presentation control instruction is aninstruction to an action engine (170) to carry out a particularpresentation action such as, for example, ‘display next page,’ ‘displaynext slide,’ ‘display paragraph 5,’ ‘send a map of client's location,’‘send travel directions to client's location,’ and so on as will occurto those of skill in the art. More particularly, in collaborative eventmedia content delivery, presentation actions are carried out bypresenting to a particular collaborator a version of a particularstructural element, such as a paragraph, a slide, a map, and so on,according to collaborator classifications such as organization name,security authorization, technical expertise level, and so on. In themethod of FIG. 13, an exemplary presentation control instruction (460)includes a presentation action identifier (518) and one or more optionalparameters (520).

In the method of FIG. 13, creating the presentation control instructionis carried out by receiving (464) from a collaborator (182) a key phrase(516) and optional parameters (520) for invoking a presentation actionand parsing (466) the key phrase (516) and parameters (520) against agrammar (258) into a presentation control instruction (460). The grammar(258) used in the voice response server (104) may be developed speciallyfor voice response service or may be the same grammar (258) used in thecollaborative event media content with the structured document (122).

In this example, receiving (464) a key phrase (516) is carried out byuse of a Voice Over Internet Protocol (“VOIP”) link (130) that carriesthe speech of at least one collaborator (182) from the collaborator'scommunications device to a voice response server (104). A VoIP link is akind of computer hardware and software that uses an internet protocolnetwork instead of a traditional telephone network as the transmissionmedium for speech. VoIP is sometimes referred to as ‘IP telephony’ or‘Voice Over the Internet’ (“VOI”). Examples of user client devicesinclude any computer equipment capable of converting input speech todigital data and transmitting it over the internet protocol to a voiceresponse server, including handheld wireless devices, personal digitalassistants, personal computers, laptop computers, and the like.

The method of FIG. 13 also includes receiving (458) a presentationcontrol instruction (460) in an action engine (170) and selecting (452)from a structured document (122) a classified structural element (402)in dependence upon collaborator classifications (210) of a collaborator(182). In the method of FIG. 13, selecting (452) a classified structuralelement (402) is carried out by selecting a classified structuralelement (402) in dependence upon the presentation action identifier(518) and the parameters (520) from the presentation control instruction(460). In the method of FIG. 13, selecting (452) a classified structuralelement (402) also includes selecting a classified structural elementhaving an associated classification identifier (708) that corresponds tothe collaborator classification (210).

For further explanation, consider an example using the followingexemplary structured document:

<collaborativeEventMediaContent>   <Grammar>     <grammarElement>      <contentType id=“WP”>       <keyPhrase>page down</keyPhrase>      <presentationAction id=“PgDn”>       <structuralElementIdentifierid=“page”>     </grammarElement >   </Grammar>   <structuredDocument>    <page id=“1”>       <p id=“1”> a paragraph </p>       <p id=“2”>another paragraph </p>     </page>     <page id=“2”>       <p id=“2”>aparagraph on a particular subject</p>       <tech level=“2”>       <pid=“2”>a more technical paragraph, same         subject</p>      </tech>       <company id=“IBM”>       <p id=“2”>a paragraph, samesubject with added detail         pertinent to a user's company</p>      </company>       <p id=“3”>a paragraph on some other subject</p>      ... ... ...     </page>   </structuredDocument></collaborativeEventMediaContent >

In this example, assume that a first collaborator has in a collaboratorprofile collaborator classifications indicating that the collaborator isan IBM employee and a second collaborator has collaboratorclassifications indicating that the collaborator has technical abilitylevel ‘2’. In this example, an action engine receives (458) apresentation control instruction (460) to move to the display to thesecond page of the structured document. The action engine then selects(452) from the structured document (256) for the first collaborator thestructural element identified as a version of page two and classifiedas:

<company id=“IBM”> <p id=“2”>a paragraph, same subject with added detailpertinent to a   collaborator's company</p> </company>and for the second collaborator the structural element identified as aversion of page two and classified as:

<tech level=“2”> <p id=“2”>a more technical paragraph, same subject</p></tech>

The method of FIG. 13 also includes transmitting (248) the selectedstructural element (456) to the collaborator (182). In the method ofFIG. 13, transmitting (248) the selected structural element (456) to thecollaborator may be carried out, for example, by selecting a datacommunications protocol for the presentation, inserting the selectedstructural element (without its classification identifiers) in a datastructure appropriate to the data communications protocol, andtransmitting the data structure to the collaborator according to thedata communications protocol. If, for example, the data communicationsprotocol is selected as HTTP, a data structure appropriate to the datacommunications protocol is an HTML document in an HTTP RESPONSE message.In such an example, transmitting (248) the selected structural element(456) to the collaborator may be carried out, for the two exemplaryversions of page two selected above, by the following HTTP RESPONSEmessages:

HTTP/1.1 200 OK Date:        Content-Type: text/xml Content-Length: 128<html><body><p id=“2”>a paragraph, same subject with added detailpertinent to a collaborator's company</p> </body></html>and for the second collaborator the structural element identified as aversion of page two and classified as:

HTTP/1.1 200 OK Date:        Content-Type: text/xml Content-Length: 103<html><body><p id=“2”>a more technical paragraph, samesubject</p></body></html>respectively, the first sent to the communications device of the firstcollaborator and the second sent to the communications device of thesecond collaborator. Note that in both transmissions, the classificationidentifiers are omitted, <company id=“IBM”> and <tech level=“2”>respectively.

This example of transmitting (248) a selected structural element (456)to a collaborator (182) is expressed in terms of HTML and HTTP, astateless, asynchronous protocol. Many embodiments will statefully holdopen a data communications connection, such as a TCP/IP connection,between a presentation server and a collaborator communication device. AStateful Java Enterprise Session Bean™ may be used, for example, to holdopen a TCP/IP connection implemented with a Java socket object. Readersof skill in the art will recognize therefore that HTML and HTTP are usedfor explanation, not for limitation. In fact, any presentationapplication using any appropriate data communications protocol usefulfor multi-media presentations may be used to present structural elementsto collaborators according to embodiments of the present invention. Suchapplication may be obtained off-the-shelf commercially or they may bespecially developed for particular presentations or kinds ofpresentation. An example of such an application available commerciallyis Microsoft NetMeeting™. Examples of other data communicationsprotocols useful with various embodiments of the present inventioninclude the Session Initiation Protocol specified in the IETF's RFC2543, the Real Time Streaming Protocol as specified in the IETF's RFC2326, the Real Time Transport Protocol of RFC 1889, and the World WideWeb Consortium's VoiceXML protocol specified in the 2003 documententitled “Voice Extensible Markup Language (VoiceXML) Version 2.0”.

For further explanation, FIG. 14 sets forth a flow chart illustrating anexemplary method for generating a dynamic client context (236) for aclient that includes providing (550) data (554) identifying a client'slocation and storing (552), in the context server (160) in a datastructure comprising a dynamic client context (236) for the client(154), the data (554) identifying the client's location. In the methodof FIG. 14, providing (550) to a context server (160) data identifying aclient's location may be carried out by GPS coordinates from a GPSreceiver (560) and storing (552) the data identifying the client'slocation may be carried out by storing the GPS coordinates in thedynamic client context (236) for the client (154).

In the method of FIG. 14, providing (220) to a context server (160) dataidentifying a client's location may also be carried out by querying(558) a router for a physical address of the router; and storing (552)the data identifying the client's location may be carried out by storingthe physical address of the router (558) in the dynamic client context(236) for the client (154). Router (558) may, for example, provide awireless access point (560) to an internet, a so-called Wi-Fi connectionor ‘hotspot,’ through which portable computers effect wirelessconnection to the World Wide Web, for example. For such connections, theclient may not be configured with its physical address and so thereforeadvantageously may query the router through the OSI link layer, throughan ARP (Address Resolution Protocol) query, for example, for thephysical address of the router. This method is useful for 802.11b-typewireless connections, for example, because in order to effect suchconnections, the client must be located physically close enough to therouter so that the router's physical address is a good approximation forthe physical address of the client.

In the method of FIG. 14, providing (550) to a context server (160) dataidentifying a client's location may be carried out by querying a router(558) for a physical address of the client (154) and storing (552) thedata identifying the client's location may be carried out by storing(552) the physical address of the client (154) in the dynamic clientcontext (236) for the client (154). Router (558) may, for example,provide a wired (561) network connection for a client (154), in whichcase the physical location of the router, even if it is known, mayprovide inadequate precision in locating clients connected to it. Suchclients could be anywhere in a large building, anywhere in a largecampus of buildings, almost anywhere with relation to the router.

Internet protocol routers typically maintain ARP caches for use inresolving network addresses to link layer addresses. For efficient linklayer address resolution, a router typically stores recently resolvednetwork addresses in association with their corresponding link layeraddresses in an ARP cache. To resolve link layer addresses into physicaladdresses, an ARP cache may be modified according to embodiments of thepresent invention to include also physical addresses of clientsconnected to a network through a router.

An example of an ARP cache modified according to embodiments of thepresent invention is shown in Table 2. Routers may serve more than onlyport on more than one LAN, but for ease of explanation, Table 2illustrates an ARP cache for a single LAN on a single port on a singlerouter. Table 2 associates network layer addresses and link layeraddresses in two entry types, dynamic and static. Static ARP cacheentries remain in the cache. Dynamic entries store ‘learned addresses’entered automatically by the router in response to ARP queries or DHCP(Dynamic Host Configuration Protocol) offer messages, for example, anddynamic entries are ‘aged’ for an ‘aging time.’ That is, dynamic ARPcache entries time out according to the cache's aging time and are thendeleted from the ARP cache. Because dynamic ARP cache entries time out,ARP cache entries for resolving link layer addresses into physicallocations advantageously are typically created as static ARP cacheentries.

TABLE 2 Exemplary ARP Cache Network Layer Address Link Layer AddressPhysical Address Type 199.199.40.1 00 00 0c 1a eb c5 504 Lavaca Static00 dd 01 07 57 15 Bldg 1, Rm 5 Static 10.57.10.32 00 60 8c 0e 6c 6a 302Congress Static 199.199.40.124 00 11 2c 1c ef c4 Dynamic

Table 2 includes three static ARP cache entries that resolve client'slink layer addresses to physical addresses. Note that the second suchentry remains in the cache even though the DHCP of its network addresshas expired. It remains in the cache because the link layer address isunique to a device connected to the routers, and the method of FIG. 14therefore will resolve that client's physical address given its linklayer address regardless whether that client has a current networkaddress. A client may query a router for the client's physical addressby use of new or modified request/response messages in the InternetControl Message Protocol (‘ICMP’), the Internet Protocol (‘IP’), thelink layer itself as in a new or modified Ethernet message type, and inother ways as will occur to those of skill in the art.

For further explanation, FIG. 15 sets forth a flow chart illustratinganother exemplary method for generating a dynamic client context (236)for a client that includes acquiring (572) data (547) representing aclient's environmental condition and storing (576), in the contextserver (160) in a data structure comprising a dynamic client context(236) for the client (154), the data (574) representing a client'senvironmental condition. In the method of FIG. 15, acquiring datarepresenting a client's environmental condition may be carried out byreceiving asynchronously from environmental sensors data representing aclient's environmental condition. In the method of FIG. 15, the dynamicclient context may include network addresses for environmental sensorsfor a client and acquiring data representing a client's environmentalcondition may be carried out by the context server's polling of theenvironmental sensors for the client.

It will be understood from the foregoing description that modificationsand changes may be made in various embodiments of the present inventionwithout departing from its true spirit. The descriptions in thisspecification are for purposes of illustration only and are not to beconstrued in a limiting sense. The scope of the present invention islimited only by the language of the following claims.

1. A method for delivering dynamic media content to collaborators, themethod comprising: providing collaborative event media content, whereinthe collaborative event media content further comprises a grammar and astructured document, wherein the grammar is a data structure associatingkey phrases with presentation actions that facilitates a collaboratornavigating the structured document of the collaborative event mediacontent using speech commands; providing data identifying a client'slocation; storing, in the context server in a data structure comprisinga dynamic client context for the client, the data identifying theclient's location; detecting an event in dependence upon the dynamicclient context, said event being characterized by an event type;identifying one or more collaborators in dependence upon the dynamicclient context and the event, the one or more collaborators each beingcharacterized by a collaborator classification; selecting from thestructured document a classified structural element in dependence uponthe event type and the collaborator classification for each of the oneor more collaborators; and transmitting the selected structural elementto the one or more collaborators.
 2. The method of claim 1 wherein:providing to a context server data identifying a client's locationfurther comprises reading GPS coordinates from a GPS receiver; andstoring the data identifying the client's location further comprisesstoring the GPS coordinates in the dynamic client context for theclient.
 3. The method of claim 1 wherein: providing to a context serverdata identifying a client's location further comprises querying a routerfor a physical address of the router; and storing the data identifyingthe client's location further comprises storing the physical address ofthe router in the dynamic client context for the client.
 4. The methodof claim 3 wherein the router further comprises a wireless networkaccess point.
 5. The method of claim 1 wherein: providing to a contextserver data identifying a client's location further comprises querying arouter for a physical address of the client; and storing the dataidentifying the client's location further comprises storing the physicaladdress of the client in the dynamic client context for the client. 6.The method of claim 1 wherein detecting an event in dependence upon thedynamic client context further comprises: detecting a change in a valueof a data element in the dynamic client context; and applying eventdetection rules base to the dynamic client context.
 7. The method ofclaim 1 wherein providing collaborative event media content furthercomprises: creating, in dependence upon original media content, astructured document, the structured document further comprising one ormore structural elements; and creating a grammar for the collaborativeevent media content, wherein the grammar includes grammar elements eachof which includes an identifier for at least one structural element ofthe structured document.
 8. The method of claim 7 further comprisingclassifying a structural element of the structured document according toa presentation attribute.
 9. The method of claim 8 wherein classifying astructural element comprises: identifying a presentation attribute forthe structural element; identifying a classification identifier independence upon the presentation attribute; and inserting theclassification identifier in association with the structural element inthe structured document.
 10. The method of claim 1 wherein said dynamicclient context comprises at least two data elements, and said event isdefined as a predefined change in each of said at least two dataelements.
 11. A system for delivering dynamic media content tocollaborators, the system comprising a computer processor, a computermemory operatively coupled to the computer processor, the computermemory having disposed within it computer program instructions that,upon being executed by the computer processor, cause the system to carryout the steps of: providing collaborative event media content, whereinthe collaborative event media content further comprises a grammar and astructured document, wherein the grammar is a data structure associatingkey phrases with presentation actions that facilitates a collaboratornavigating the structured document of the collaborative event mediacontent using speech commands; providing data identifying a client'slocation; storing, in the context server in a data structure comprisinga dynamic client context for the client, the data identifying theclient's location; detecting an event in dependence upon the dynamicclient context, said event being characterized by an event type;identifying one or more collaborators in dependence upon the dynamicclient context and the event, the one or more collaborators each beingcharacterized by a collaborator classification; selecting from thestructured document a classified structural element in dependence uponthe event type and the collaborator classification for each of the oneor more collaborators; and transmitting the selected structural elementto the collaborator one or more collaborators.
 12. The system of claim11 wherein: providing to a context server data identifying a client'slocation further comprises reading GPS coordinates from a GPS receiver;and storing the data identifying the client's location further comprisesstoring the GPS coordinates in the dynamic client context for theclient.
 13. The system of claim 11 wherein: providing to a contextserver data identifying a client's location further comprises means forquerying a router for a physical address of the router; and storing thedata identifying the client's location further comprises means forstoring the physical address of the router in the dynamic client contextfor the client.
 14. The system of claim 13 wherein the router furthercomprises a wireless network access point.
 15. The system of claim 11wherein: providing to a context server data identifying a client'slocation further comprises means for querying a router for a physicaladdress of the client; and storing the data identifying the client'slocation further comprises means for storing the physical address of theclient in the dynamic client context for the client.
 16. The system ofclaim 11 wherein detecting an event in dependence upon the dynamicclient context further comprises: detecting a change in a value of adata element in the dynamic client context; and applying event detectionrules base to the dynamic client context.
 17. The system of claim 11wherein providing collaborative event media content further comprises:creating, in dependence upon original media content, a structureddocument, the structured document further comprising one or morestructural elements; and creating a grammar for the collaborative eventmedia content, wherein the grammar includes grammar elements each ofwhich includes an identifier for at least one structural element of thestructured document.
 18. The system of claim 17 further comprisingclassifying a structural element of the structured document according toa presentation attribute.
 19. The system of claim 18 wherein classifyinga structural element comprises: identifying a presentation attribute forthe structural element; identifying a classification identifier independence upon the presentation attribute; and inserting theclassification identifier in association with the structural element inthe structured document.
 20. The system of claim 11 wherein said dynamicclient context comprises at least two data elements, and said event isdefined as a predefined change in each of said at least two dataelements.
 21. A computer program product for delivering dynamic mediacontent to collaborators, the computer program product comprising: anon-transitory recording medium having computer readable program codeembodied therewith, the computer readable program code comprising:computer readable program code configured to provide collaborative eventmedia content, wherein the collaborative event media content furthercomprises a grammar and a structured document, wherein the grammar is adata structure associating key phrases with presentation actions thatfacilitates a collaborator navigating the structured document ofcollaborative event media content using speech commands; computerreadable program code configured to provide data identifying a client'slocation; computer readable program code configured to store in thecontext server in a data structure comprising a dynamic client contextfor the client, the data identifying the client's location; computerreadable program code configured to detect an event in dependence uponthe dynamic client context, said event being characterized by an eventtype; computer readable program code configured to identify one or morecollaborators in dependence upon the dynamic client context and theevent, the one or more collaborators each being characterized by acollaborator classification; computer readable program code configuredto select from the structured document a classified structural elementin dependence upon the event type and the collaborator classificationfor each of the one or more collaborators; and computer readable programcode configured to transmit the selected structural element to the oneor more collaborators.
 22. The computer program product of claim 21wherein: the computer readable program code configured provide to acontext server data identifying a client's location further comprisescomputer readable program code configured read GPS coordinates from aGPS receiver; and the computer readable program code configured storethe data identifying the client's location further comprises computerreadable program code configured store the GPS coordinates in thedynamic client context for the client.
 23. The computer program productof claim 21 wherein: computer readable program code configured provideto a context server data identifying a client's location furthercomprises computer readable program code configured query a router for aphysical address of the router; and computer readable program codeconfigured store the data identifying the client's location furthercomprises computer readable program code configured store the physicaladdress of the router in the dynamic client context for the client. 24.The computer program product of claim 23 wherein the router furthercomprises a wireless network access point.
 25. The computer programproduct of claim 21 wherein: computer readable program code configuredprovide to a context server data identifying a client's location furthercomprises computer readable program code configured query a router for aphysical address of the client; and computer readable program codeconfigured store the data identifying the client's location furthercomprises computer readable program code configured store the physicaladdress of the client in the dynamic client context for the client. 26.The computer program product of claim 21 wherein computer readableprogram code configured detect an event in dependence upon the dynamicclient context further comprises: computer readable program codeconfigured detect a change in a value of a data element in the dynamicclient context; and computer readable program code configured applyevent detection rules base to the dynamic client context.
 27. Thecomputer program product of claim 21 wherein computer readable programcode configured provide collaborative event media content furthercomprises: computer readable program code configured create, independence upon original media content, a structured document, thestructured document further comprising one or more structural elements;and computer readable program code configured create a grammar for thecollaborative event media content, wherein the grammar includes grammarelements each of which includes an identifier for at least onestructural element of the structured document.
 28. The computer programproduct of claim 27 further comprising computer readable program codeconfigured classify a structural element of the structured documentaccording to a presentation attribute.
 29. The computer program productof claim 28 wherein computer readable program code configured classify astructural element comprises: computer readable program code configuredidentify a presentation attribute for the structural element; computerreadable program code configured identify a classification identifier independence upon the presentation attribute; and computer readableprogram code configured insert the classification identifier inassociation with the structural element in the structured document. 30.The computer program product of claim 21 wherein said dynamic clientcontext comprises at least two data elements, and said event is definedas a predefined change in each of said at least two data elements.